/**
 *	OpenSource code or fragments by agile webentwicklung, Marcus Fuhrmeister
 *
 *	Redistribution and use in source and binary forms, with or without
 *	modification, are permitted provided that the following conditions
 *	are met:
 *  
 *		* Redistribution of source code must retain the above OpenSource comment,
 *		this list of conditions and the following disclaimer.
 * 
 *		* Redistribution in binary form must reproduce the above OpenSource comment,
 *		this list of conditions and the following disclaimer in the
 *		documentation and/or other materials provided with the distribution.
 * 
 *	Neither the name of 'agile webentwicklung, Marcus Fuhrmeister' or the
 *	names of contributors may be used to endorse or promote products derived
 *	from this software without specific prior written permission.
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
 */

package de.fuhrmeister.util;

import java.util.logging.Logger;

public class Tools {

	public static ImageManager imageMng;
	public static ConfigManager configMng;
	public static MessageBox messageBox;
	public static FileManager fileManager;
	public static Logger logManager;
	public static BrowserLauncher browserLauncher;

	/**
	 * Constructor, calls to initialize the tools.
	 */
	public Tools() {
		init();
	}

	/**
	 * Inits the log manager, the message dialogs, the file manager,
	 * the image manager, the configuration manager and the
	 * executable launcher.
	 */
	public static void init() {
		logManager = Logger.getLogger("global");
		messageBox = MessageBox.getInstance();
		fileManager = FileManager.getInstance();
		imageMng = ImageManager.getInstance();
		configMng = ConfigManager.getInstance();
		browserLauncher = BrowserLauncher.getInstance();
	}

	/**
	 * Returns <code>true</code> if all tools are still in memory.
	 * 
	 * @return true all all tools are not null
	 */
	public static boolean alive() {
		return imageMng != null && configMng != null && messageBox != null && fileManager != null && logManager != null && browserLauncher != null;
	}

	/**
	 * Resets all tools.
	 */
	public static void die() {
		configMng = null;
		imageMng = null;
		messageBox = null;
		fileManager = null;
		browserLauncher = null;
		logManager = null;
	}
}